-- ------------------------------------------------------------
-- CREATING TABLE ZONA
-- ------------------------------------------------------------

-- TABLE
CREATE TABLE tbl_zona (
  id_zona INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nm_zona VARCHAR(20) NULL,
);
--

--CONSTRAINT
GO
ALTER TABLE tbl_zona ADD CONSTRAINT pk_id_zona PRIMARY KEY
(
	id_zona
);

GO
ALTER TABLE tbl_zona ADD CONSTRAINT un_nm_zona UNIQUE
(
	nm_zona
);
--

-- ------------------------------------------------------------
-- CREATING TABLE ORIENTACAO GEOGRAFICA
-- ------------------------------------------------------------

-- TABLE
CREATE TABLE tbl_orientacao_geografica (
  id_orientacao_geografica INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nm_orientacao_geografica VARCHAR(20) NULL,
);
--

-- CONSTRAINT
GO
ALTER TABLE tbl_orientacao_geografica ADD CONSTRAINT pk_id_orientacao_geografica PRIMARY KEY
(
	id_orientacao_geografica
);

GO
ALTER TABLE tbl_orientacao_geografica ADD CONSTRAINT un_nm_orientacao_geografica UNIQUE
(
	nm_orientacao_geografica
);
--

-- ------------------------------------------------------------
-- CREATING TABLE MUNICIPIO
-- ------------------------------------------------------------
-- TABLE
CREATE TABLE tbl_municipio (
  id_municipio INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nm_municipio VARCHAR(50) NULL,
);
--

-- CONSTRAINT
GO
ALTER TABLE tbl_municipio ADD CONSTRAINT pk_id_municipio PRIMARY KEY
(
	id_municipio
);

GO
ALTER TABLE tbl_municipio ADD CONSTRAINT un_nm_municipio UNIQUE
(
	nm_municipio
);
--

-- ------------------------------------------------------------
-- CREATING TABLE DISTRITO
-- ------------------------------------------------------------

CREATE TABLE tbl_distrito (
  id_distrito INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  id_zona INTEGER UNSIGNED NOT NULL,
  nm_distritos VARCHAR(50) NULL,
);

-- CONSTRAINT
GO
ALTER TABLE tbl_distrito ADD CONSTRAINT pk_id_distrito PRIMARY KEY
(
	id_distrito
);

GO
ALTER TABLE tbl_distrito ADD CONSTRAINT un_nm_distritos UNIQUE
(
	nm_distritos
);

GO
ALTER TABLE tbl_distrito ADD CONSTRAINT fk_tbl_distrito_tbl_zona FOREIGN KEY
(
	id_zona
)
REFERENCES tbl_zona
(
	id_zona
);
--

-- ------------------------------------------------------------
-- CREATING TABLE BAIRRO
-- ------------------------------------------------------------

-- TABLE
CREATE TABLE tbl_bairro (
  id_bairro INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  id_distrito INTEGER UNSIGNED NOT NULL,
  nm_bairro VARCHAR(50) NULL,
  area_geografica INTEGER UNSIGNED NULL,
  populacao INTEGER UNSIGNED NULL,
  densidade_demografica INTEGER UNSIGNED NULL,
  altitude INTEGER UNSIGNED NULL,
);
--

-- CONSTRAINT
GO
ALTER TABLE tbl_bairro ADD CONSTRAINT pk_id_bairro PRIMARY KEY
(
	id_bairro
);

GO
ALTER TABLE tbl_bairro ADD CONSTRAINT fk_tbl_bairro_tbl_distrito FOREIGN KEY
(
	id_distrito
)
REFERENCES tbl_distrito
(
	id_distrito
);
--

-- ------------------------------------------------------------
-- CREATING TABLE DISTRITO LIMITROFE
-- ------------------------------------------------------------

-- TABLE
CREATE TABLE tbl_distrito_limitrofe (
  id_distrito_limitrofe INTEGER UNSIGNED NOT NULL,
  id_distrito INTEGER UNSIGNED NOT NULL,
  id_orientacao_geografica INTEGER UNSIGNED NOT NULL,
);
--

-- CONSTRAINT
GO
ALTER TABLE tbl_distrito_limitrofe ADD CONSTRAINT pk_tbl_distrito_limitrofe PRIMARY KEY
(
	id_distrito_limitrofe, id_distrito
);

GO
ALTER TABLE tbl_distrito_limitrofe ADD CONSTRAINT fk_tbl_distrito_limitrofe_distrito_limitrofe  FOREIGN KEY
(
	id_distrito_limitrofe 
)
REFERENCES tbl_distrito
(
	id_distrito 
);

GO
ALTER TABLE tbl_distrito_limitrofe ADD CONSTRAINT fk_tbl_distrito_limitrofe_distrito  FOREIGN KEY
(
	id_distrito 
)
REFERENCES tbl_distrito
(
	id_distrito 
);
--


-- ------------------------------------------------------------
-- CREATING TABLE MUNICIPIO LIMITROFE
-- ------------------------------------------------------------
-- TABLE
CREATE TABLE tbl_municio_limitrofe (
  id_distrito INTEGER UNSIGNED NOT NULL,
  id_municipio INTEGER UNSIGNED NOT NULL,
  tbl_orientacao_geografica_id_orientacao_geografica INTEGER UNSIGNED NOT NULL,
);
--

-- CONSTRAINT
GO
ALTER TABLE tbl_municio_limitrofe ADD CONSTRAINT pk_tbl_municio_limitrofe PRIMARY KEY
(
	id_distrito, id_municipio
);

GO
ALTER TABLE tbl_municio_limitrofe ADD CONSTRAINT fk_tbl_municio_limitrofe_tbl_distrito FOREIGN KEY
(
	id_distrito 
)
REFERENCES tbl_distrito
(
	id_distrito 
);

GO
ALTER TABLE tbl_municio_limitrofe ADD CONSTRAINT fk_tbl_municio_limitrofe_tbl_municipio  FOREIGN KEY
(
	id_municipio 
)
REFERENCES tbl_municipio
(
	id_municipio 
);
--



